package 剑指Offer.简单;

import Entity.ListNode;

/**
 * 定义一个函数，输入一个链表的头节点，反转该链表并输出反转后链表的头节点。
 * <p>
 *  
 * <p>
 * 示例:
 * <p>
 * 输入: 1->2->3->4->5->NULL
 * 输出: 5->4->3->2->1->NULL
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * @author caihe
 * @date 2022/8/16 16:28
 */
public class _24反转链表 {


    public static void main(String[] args) {
        System.out.println(1);

    }

    public ListNode reverseList(ListNode head) {
        // curr 维护节点当前的位置
        ListNode curr = head;
        // pre 维护节点的前一个节点
        ListNode pre = null;
        while (curr != null) {
            // 暂时保存下个节点
            ListNode tmp = curr.next;
            // 将当前节点的下个节点设置为前一个节点
            curr.next = pre;
            // 将维护前一个节点的变量移动到当前的节点
            pre = curr;
            // 将当前节点移动到下一个节点
            curr = tmp;
        }
        return pre;
    }


}
